On 30.10.2013 11:16, Eugene Grosbein wrote: > >> ssh так написан. Он считает любую разовую ошибку отправки типа EHOSTUNREACH > >> фатальной и самостоятельно рвет соединение. Используй screen/tmux. > >> А вот telnet так не делал. > DM> Что-то ничего не понятно. > DM> Hаверное вместо EHOSTUNREACH имелся ввиду ENETUNREACH, > ENETUNREACH, по-моему, сейчас не используется. Hу если дока не врет то не используется, но susv допусткает такое использование. А вот EHOSTUNREACH нет ни в манах ни в susv Хотя если все-таки прочесть сабж то увидим что топикстартер получает EPIPE и именно на write(). Как он добился этого я не знаю - у меня так не получается. Hи отключение шнурка ни интерфейс в дауне к ошибке не приводит и любой ввод в терминал успешно срабатывает после восстановления связи.
> DM> но все равно такая ошибка допустима только в connect() или > DM> для датраграмных сокетов. > DM> Hу допустим кто-то как обычно не дописал доку и действительно > DM> какая-то из этих ошибок посылается в ответ на write. Что тут > DM> можно поделать? Временная ошибка или нет не важно - сокет > DM> все равно в недопустимом состоянии и ничего кроме close() с ним > DM> делать нельзя. Как мог телнет из этого выкручиваться?! > С чего бы это в недопустимом? Сокет полностью в норме, установлен, > а то что промежуточный маршрут потерялся, сокета вообще не касается. > Как потерялся, так и восстановится. Во времена диалапа этим пользовался > вовсю. Если с сокетом все ок зачем вообще что-то на прикладной уровень сообщать?! Блокируй вызов и жди или ответь EWOULDBLOCK если нельзя а буфер полон.
--- ifmail v.2.15dev5.4 * Origin: Demos online service (2:5020/400)